package pe.edu.unmsm.ocaa.workspace.integracion.dao.impl;

import java.util.List;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.stereotype.Repository;

import com.ibatis.sqlmap.client.SqlMapClient;

import pe.edu.unmsm.ocaa.workspace.integracion.dao.ProgramaDAO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.GrupoProgramaDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.ProgramaDTO;
import pe.edu.unmsm.ocaa.workspace.negocio.modelo.dto.UsuarioDTO;

@Repository
public class ProgramaDAOImpl extends SqlMapClientDaoSupport implements ProgramaDAO {

	@Autowired
	public ProgramaDAOImpl(SqlMapClient sql) {
		super.setSqlMapClient(sql);
	}

	@Override
	public List<ProgramaDTO> selectProgramas() throws DataAccessException {
		return (List<ProgramaDTO>)getSqlMapClientTemplate().queryForList("Programa.selectProgramas");
	}

	@Override
	public Integer insertPrograma(ProgramaDTO programaEditar)
			throws DataAccessException {
		getSqlMapClientTemplate().insert("Programa.insertPrograma", programaEditar);
		return (Integer)getSqlMapClientTemplate().queryForObject("Programa.selectMaxIdPrograma");
	}

	@Override
	public void updatePrograma(ProgramaDTO programaEditar)
			throws DataAccessException {
		getSqlMapClientTemplate().update("Programa.updatePrograma", programaEditar);
	}

	@Override
	public void insertGrupoxPrograma(GrupoProgramaDTO usuprog)
			throws DataAccessException {
		getSqlMapClientTemplate().insert("Programa.insertGrupProg", usuprog);
	}

	@Override
	public void deleteGrupPrograxIdProg(Integer idPrograma)
			throws DataAccessException {
		getSqlMapClientTemplate().delete("Programa.deleteGrupPrograxIdProg", idPrograma);
	}

	@Override
	public ProgramaDTO selectPrograma(Integer idPrograma)
			throws DataAccessException {
		return (ProgramaDTO)getSqlMapClientTemplate().queryForObject("Programa.selectProgramaxId", idPrograma);
	}

	@Override
	public List<GrupoDTO> selectGruposxProg(Integer idPrograma)
			throws DataAccessException {
		return (List<GrupoDTO>)getSqlMapClientTemplate().queryForList("Grupo.selectGruposxProg", idPrograma);
	}

	@Override
	public void deletePrograma(Integer idPrograma)
			throws DataAccessException {
		getSqlMapClientTemplate().delete("Programa.deletePrograma", idPrograma);
	}
}
